// 这里的常量有一部分是前端和 Nest 后端公用的，如果要改前后端要同时改。
import type { ISelectDataType } from "@/types";

// 项目里不可删的用户。
// admin 是最基本的角色，因此不能删除。
export const RESERVED_USERS = ["admin"];

// 项目里不可删的用户角色。
// 这些是最基本的角色，用于系统里最基本的权限判断，因此不可删除。
// 根据目前需求，这个变量暂时不使用。
export const RESERVED_ROLES = ["root", "admin", "user", "visitor"];

// 性别列表
export const GENDER_DATA: ISelectDataType[] = [
  {
    label: "男",
    value: "1"
  },
  {
    label: "女",
    value: "2"
  },
  {
    label: "保密",
    value: "3"
  }
];

// 常规状态列表
export const STATUS_DATA: ISelectDataType[] = [
  {
    label: "启用",
    value: 0
  },
  {
    label: "禁用",
    value: 1
  }
];

// 角色类型列表
export const ROLE_CODE_TYPE_DATA: ISelectDataType[] = [
  { label: "超级管理员", value: "root" },
  { label: "常规管理员", value: "admin" },
  { label: "常规用户", value: "user" },
  { label: "游客", value: "visitor" },
  { label: "自定义", value: "custom" }
];

export enum EDIT_FORM_MODES {
  default = "缺省",
  new = "新增",
  edit = "编辑",
  view = "查看"
}

// JS 密码正则：至少含有字母数字
export const LETTER_NUMBER_PASS: RegExp = /^(?=.*[0-9a-zA-Z]).*$/;

export const PAGINATION_VALUE = {
  pageSize: 20,
  total: 0,
  current: 1
};

export const CURRENCY_LIST = [
  { label: "CNY", value: 0 },
  {
    label: "USD",
    value: 1
  }
];

export const REPAY_STATUS_LIST = [
  { label: "未还清", value: 0 },
  {
    label: "逾期",
    value: 1
  },
  {
    label: "已还清",
    value: 2
  }
];

export const EDIT_FORM_SAVE_BUTTON = (mode: string) => {
  switch (mode) {
    case "view":
      return "确定";
    case "new":
      return "创建";
    case "edit":
      return "修改";
    default:
      return "提交";
  }
};
